1
Необходимость неуправляемого кода в Rust
AI034Lesson 19
00:00

Скрытый язык внутри

У Руста есть секрет: на самом деле он два языка в одном. Хотя безопасный Руст — ваш защитник, компилятор Руст по сути консервативен. Он следует строгой философии: лучше отвергнуть корректную и безопасную программу, чем случайно разрешить одну опасную. Это создаёт разрыв между тем, что может сделать аппаратное обеспечение, и тем, что может доказать компилятор.

Жёсткая реальность

Представьте компилятор как строгого сторожа. В нашем примере кода условие сопоставления если у применяется ко всей группе шаблонов (4 | 5 | 6). Эта жёсткая предшественность отражает работу проверки заемов; она применяет глобальные непримиримые правила к вашей памяти. Но лежащее в основе аппаратное обеспечение внутренне небезопасно; оно не понимает владения или сроков жизни. Чтобы создавать высокопроизводительные инструменты, такие как split_at_mut, мы должны перейти в неуправляемый Руст «выходной люк», чтобы выполнять операции, технически правильные, но логически слишком сложные для статического анализа компилятора.

Весь технически безопасный кодДоказано безопасным (проверка заемов)Необходимость неуправляемого кода

Промежуток между красным и зелёным кругами — это место, где живёт неуправляемый Руст, позволяя нам раскрыть всю мощь аппаратного обеспечения, когда статический анализ терпит неудачу.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>